D6.1 Basic Oscillations#


D6.1.1 Motivation#

Oscillations are among the most common and important phenomena in physics. They appear in countless physical systems: a swinging pendulum, a vibrating guitar string, or the alternating current in an electrical circuit. Studying oscillations gives us insight into how systems respond to restoring forces, how energy can be transferred between kinetic and potential forms, and how complex phenomena like sound and electromagnetic waves arise from simpler repeating motions. By mastering the basics of oscillations, we build the foundation for understanding waves, resonance, and many modern technologies.


D6.1.2 What are Oscillations?#

An oscillation is a repetitive back-and-forth motion of a system about an equilibrium position. The equilibrium position is the point where the system naturally rests when undisturbed. When displaced from equilibrium, a restoring force often acts on the system, pulling it back toward equilibrium. However, because of inertia, the system overshoots and continues moving to the other side, creating a cycle of motion. This push-and-pull balance between inertia and restoring forces is at the heart of oscillatory motion.

In many idealized situations, oscillations are not random or chaotic; they are characterized by repetition and predictability. A mass on a spring, for example, will trace out the same pattern over and over, provided there is little or no energy lost to friction or other dissipative effects. This predictable nature allows physicists to describe oscillations mathematically with great precision, often using sinusoidal functions such as sines and cosines. These functions capture the repeating pattern of the system’s motion over time.

It is also important to distinguish oscillations from waves. Oscillations describe the localized motion of a single system — for example, one pendulum swinging in place or one circuit oscillating in current. Waves, on the other hand, involve oscillations that spread through space and time, carrying energy with them. For instance, the oscillation of a single air molecule back and forth in its equilibrium position does not by itself create a sound. But when this oscillation is communicated to neighboring molecules, the disturbance travels as a wave, and that is what we perceive as sound. In this way, oscillations form the building blocks of wave phenomena.


D6.1.3 Basic Characteristics of Oscillations#

  1. Amplitude (\(A\))
    The maximum displacement of the system from equilibrium.

  2. Period (\(T\))
    The time it takes to complete one full cycle of motion.
    Unit: seconds (s).

  3. Frequency (\(f\))
    The number of cycles completed per second.
    Unit: cycles/second or hertz (Hz).

    \[ f = \frac{1}{T} \]
  4. Angular Frequency (\(\omega\))
    A measure of how rapidly the system oscillates. Unit: radians/second (rad/s).

    Related to frequency by:

    \[ \omega = 2 \pi f = \frac{2 \pi}{T} \]

D6.1.4 Example#

The plot below shows the oscillation of a block attached to a spring. The block oscillations between \(x = -1\) m and \(x = +1\) m. This maximum variation from equilibrium is known as the amplitude (A). Hence, the amplitude for this spring-mass system is \(A = 1\) m. We can see read from the plot that the period is 0.2 s, yielding a frequency of 5 Hz.

Hide code cell source

%reset -f

import numpy as np
import matplotlib.pyplot as plt

# Parameters
A = 1.0          # Amplitude
f = 5.0          # Frequency in Hz
omega = 2*np.pi*f
T = 1/f          # Period
t = np.linspace(0, 3*T, 1000)  # time array covering 3 periods

# Oscillation function
x = A * np.cos(omega * t)

# Plot
plt.figure(figsize=(8,4))
plt.plot(t, x, label=r"$x(t) = A \cos(\omega t)$")
plt.axhline(0, color='black', linewidth=0.7)

# Shade one full cycle (0 to T)
plt.axvspan(0, T, color='lightblue', alpha=0.3, label="One period")

# Mark elapsed time for period
plt.annotate("", xy=(0, -1.2), xytext=(T, -1.2),
             arrowprops=dict(arrowstyle="<->", color='r'))
plt.text(T/2, -1.35, r"$T$", color='r', ha='center')

# --- Amplitude annotation ---
# Vertical arrow from equilibrium to maximum displacement
plt.annotate("", xy=(0.15, A), xytext=(0.15, 0),
             arrowprops=dict(arrowstyle="<->", color='purple'))
plt.text(0.13, 0.5, r"$A$", color='purple', va='center')

# Labels and legend
plt.xlabel("Time (s)")
plt.ylabel("Displacement")
plt.title("Simple Oscillation with Period and Amplitude Marked")
plt.legend()
plt.ylim(-1.5, 1.5)
plt.grid(True)
plt.show()
../_images/c40757dc79c0a3d3932603c2a61aada93a4de68f040513775ad17825125d0327.png

D6.1.5 Why “Angular Frequency” Makes Sense#

At first, the phrase angular frequency sounds like it belongs only to rotational motion. After all, “angular” usually means something measured in radians around a circle.

But there is a very useful way to visualize an oscillation that naturally introduces angles—without any rotation happening in the real physical system.

A geometric picture (projection idea)#

Imagine a point moving at a constant rate around a circle of radius \(A\).
At each instant, the point has an angle \(\theta\) measured from the positive horizontal axis.

Now focus only on the horizontal coordinate of that moving point. That horizontal coordinate is a 1D projection:

\[ x = A\cos(\theta). \]

As the point goes around the circle, its projection onto the horizontal axis moves back and forth in a perfectly repeating way—this is exactly the shape of sinusoidal oscillation.

Why \(\omega\) appears#

If the angle increases steadily in time, we can write:

\[ \theta(t) = \omega t + \phi, \]

where:

  • \(\omega\) tells us how fast the phase angle advances in time,

  • \(\phi\) sets the starting phase at \(t=0\).

Substituting into the projection equation gives the standard oscillation model:

\[ x(t) = A\cos(\omega t + \phi). \]

So the word angular in angular frequency refers to the fact that oscillations can be understood as a projection of uniform phase advance, where the “cycle” is naturally measured in radians.

Why radians are the natural unit#

One full oscillation corresponds to one full cycle of phase:

\[ \Delta \theta = 2\pi \ \text{radians}. \]

That is why \(\omega\) is measured in rad/s, and why

\[ \omega = 2\pi f. \]

Even though the physical motion is along a line, the phase behaves like an angle that increases steadily through cycles.

Hide code cell source

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from IPython.display import HTML, display
import matplotlib as mpl
mpl.rcParams['animation.embed_limit'] = 30  # MB (default is ~20)

# ----------------------------
# Parameters (edit as desired)
# ----------------------------
A = 1.0          # amplitude
f = 0.5          # Hz
omega = 2*np.pi*f
phi = 0.4        # rad

# Animation settings
fps = 30
cycles_to_show = 2
T = 1/f
t_end = cycles_to_show * T
duration_s = 10                      # total animation duration (seconds)
nframes = int(fps * duration_s)

# Time arrays
t = np.linspace(0, t_end, 1200)
x = A*np.cos(omega*t + phi)

# ----------------------------
# Figure layout (circle + x(t))
# ----------------------------
fig = plt.figure(figsize=(10, 4))
gs = fig.add_gridspec(1, 2, width_ratios=[1, 1.4])

axC = fig.add_subplot(gs[0, 0])
axX = fig.add_subplot(gs[0, 1])

# Left: "phase cycle" picture (no complex-plane language)
theta = np.linspace(0, 2*np.pi, 400)
axC.plot(A*np.cos(theta), A*np.sin(theta), lw=2)

axC.axhline(0, lw=1)
axC.axvline(0, lw=1)
axC.set_aspect('equal', adjustable='box')
axC.set_xlim(-1.2*A, 1.2*A)
axC.set_ylim(-1.2*A, 1.2*A)
axC.set_xlabel("x (1D projection)")
axC.set_ylabel("auxiliary coordinate")
axC.set_title("Steady phase advance → 1D projection")

# Dynamic artists on circle panel
radius_line, = axC.plot([], [], lw=2)
drop_line,   = axC.plot([], [], lw=2)
dot_circle,  = axC.plot([], [], marker='o', markersize=8)
dot_proj,    = axC.plot([], [], marker='x', markersize=8)
time_text = axC.text(0.02, 0.95, "", transform=axC.transAxes, va="top")

# Right: x(t) curve (static) + moving point
axX.plot(t, x, lw=2, label=r"$x(t)=A\cos(\omega t+\phi)$")
axX.set_xlim(0, t_end)
axX.set_ylim(-1.2*A, 1.2*A)
axX.set_xlabel("time t (s)")
axX.set_ylabel("displacement x")
axX.set_title("Resulting oscillation")
axX.legend(loc="upper right")

dot_xt, = axX.plot([], [], marker='o', markersize=8)
vline_t = axX.axvline(0, lw=1)

# ----------------------------
# Animation update
# ----------------------------
def init():
    radius_line.set_data([], [])
    drop_line.set_data([], [])
    dot_circle.set_data([], [])
    dot_proj.set_data([], [])
    dot_xt.set_data([], [])
    vline_t.set_xdata([0, 0])
    time_text.set_text("")
    return radius_line, drop_line, dot_circle, dot_proj, dot_xt, vline_t, time_text

def update(frame):
    tt = (frame/(nframes-1)) * t_end
    th = omega*tt + phi

    xc = A*np.cos(th)
    yc = A*np.sin(th)

    # circle panel
    radius_line.set_data([0, xc], [0, yc])
    drop_line.set_data([xc, xc], [yc, 0])
    dot_circle.set_data([xc], [yc])
    dot_proj.set_data([xc], [0])

    # x(t) panel
    dot_xt.set_data([tt], [xc])            # x-projection equals A cos(theta)
    vline_t.set_xdata([tt, tt])

    time_text.set_text(f"t = {tt:0.2f} s\nθ = ωt + φ = {th%(2*np.pi):0.2f} rad")
    return radius_line, drop_line, dot_circle, dot_proj, dot_xt, vline_t, time_text

anim = FuncAnimation(
    fig, update, frames=nframes, init_func=init,
    blit=True, interval=1000/fps
)

plt.close(fig)  # prevents duplicate static figure display
display(HTML(anim.to_jshtml()))

Example — Why Oscillations Use Angular Frequency

A system undergoes simple oscillatory motion with a frequency of \(f = 0.50\,\text{Hz}\).

This means the motion completes one full cycle every

\[ T = \frac{1}{f} = 2.0\,\text{s}. \]

Rather than describing the motion in terms of cycles, we often describe it in terms of phase, which increases continuously as the motion progresses through each cycle. One complete cycle corresponds to a phase change of \(2\pi\) radians.

The rate at which the phase advances is called the angular frequency \(\omega\), defined by

\[ \omega = 2\pi f. \]

Substituting the given frequency,

\[ \omega = 2\pi(0.50) = \pi \,\text{rad/s}. \]

The oscillatory motion can therefore be written in the form

\[ x(t) = A\cos(\omega t + \phi), \]

where \(A\) is the amplitude and \(\phi\) is the phase constant.

The use of angular frequency reflects the fact that oscillatory motion can be understood as a steady progression through phase, measured in radians, even though the physical motion itself occurs along a single line.


Example — Interpreting Angular Frequency in an Oscillation

A mass oscillates along a horizontal line according to the equation

\[ x(t) = 0.20\cos(4\pi t), \]

where \(x\) is in meters and \(t\) is in seconds.



Interpretation

The coefficient of \(t\) inside the cosine function is the angular frequency,

\[ \omega = 4\pi \,\text{rad/s}. \]

The corresponding frequency is

\[ f = \frac{\omega}{2\pi} = 2.0\,\text{Hz}. \]

This means the motion completes two full oscillations every second, even though the displacement itself moves only back and forth along a single line.

The cosine function tracks the system’s phase progression, and the angular frequency tells us how rapidly the system advances through each oscillation cycle.


Box Activity 1 — Understanding Angular Frequency in Oscillatory Motion

In this activity, you will analyze one-dimensional oscillatory motion using a given mathematical model.

Focus on physical interpretation, units, and the meaning of angular frequency rather than on how the equation is derived.


Task:

A system oscillates along a horizontal line according to the equation

\[ x(t) = 0.30 \cos(2\pi t + \tfrac{\pi}{3}), \]

where \(x\) is measured in meters and \(t\) is measured in seconds.

  1. Identify the amplitude of the oscillation.

  2. Determine the angular frequency \(\omega\) and its units.

  3. Find the frequency \(f\) and the period \(T\).

  4. Explain, in words, what the phase constant \(\phi = \tfrac{\pi}{3}\) tells you about the motion at \(t = 0\).

A Possible Solution Guide

Key ideas

A standard oscillation model has the form

\[ x(t) = A\cos(\omega t + \phi), \]

where:

  • \(A\) is the amplitude,

  • \(\omega\) is the angular frequency (rad/s),

  • \(\phi\) sets the initial phase.


Step 1: Amplitude

From the equation,

\[ A = 0.30\,\text{m}. \]

Step 2: Angular frequency

The coefficient of \(t\) inside the cosine function is the angular frequency:

\[ \omega = 2\pi \,\text{rad/s}. \]

Step 3: Frequency and period

Using the relationship

\[ \omega = 2\pi f, \]

we find

\[ f = \frac{\omega}{2\pi} = 1.0\,\text{Hz}. \]

The period is

\[ T = \frac{1}{f} = 1.0\,\text{s}. \]

Step 4: Interpretation of the phase constant

The phase constant \(\phi = \tfrac{\pi}{3}\) indicates that at \(t = 0\), the system does not start at its maximum displacement. Instead, it begins partway through its oscillation cycle.

The phase constant determines the system’s initial state of motion, specifying where in the repeating cycle the oscillation begins.